﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Pessoas_DadosPessoa_pDadosPessoais : PageBase
{

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            CarregarCombos();
            CarregarDadosPessoa();

            lnkFoto.Text = "Clique aqui para adicionar";
            lnkAtestado.Text = "Clique aqui para adicionar";
        }
    }

    #region Eventos
    protected void rcbEstadoNat_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        CarregarCidadeNaturalidade(rcbCidadeNat, Int32.Parse(rcbEstadoNat.SelectedValue.ToString()));
        rcbCidadeNat.Enabled = true;
    }
    protected void gridNacionalidade_DeleteCommand(object source, GridCommandEventArgs e)
    {
        int id = int.Parse((e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdTipoNacionalidade"].ToString());

        PessoaNacionalidade pessoaNacionalidade = new PessoaNacionalidade();
        pessoaNacionalidade.IdPessoa = IdPessoa;
        pessoaNacionalidade.TipoNacionalidade = new TipoNacionalidade(id);

        pessoaNacionalidade.Excluir();

        CarregaNacionalidade();
        //int idPessoaEmail = 0;
        //idPessoaEmail = int.Parse((e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdPessoaEmail"].ToString());
        //RemoveEmail(idPessoaEmail);
        //CarregarEmail();
        
        //int id = int.Parse((e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdWfConfigParametro"].ToString());

        //WorkflowConfigParametro wfParametro = new WorkflowConfigParametro(id);
        //wfParametro.Excluir();

        //CarregarTudo();
    }
    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        CarregaNacionalidade();
    }
    #endregion

    #region Metodos

    private void CarregarDadosPessoa()
    {
        try
        {
            CarregarDadosPessoais();
            CarregaNacionalidade();
            CarregaNaturalidade();
            CarregaFiliacao();
            CarregarConjuge();
            CarregarCarcFisicas();
            CarregarObs();
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro: " + ex.Message;
        }
    }
    private void CarregarCombos()
    {
        rcbCidadeNat.Enabled = false;

        CarregarSexo(rcbSexo);
        CarregarEstadoNaturalidade(rcbEstadoNat);
        CarregarRaca(rcbRaca);
        CarregaEstadoCivil(rcbEstadoCivil);
        CarregaCabelos(rcbCabelo);
        CarregaOlhos(rcbOlhos);
        CarregaSanguineo(rcbTipoSanguineo);
    }

    #region CarregarDadosPessoa
    private void CarregarDadosPessoais()
    {
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;
        pessoa.CarregarDadosPessoais();

        txtNome.Text = pessoa.Nome;
        txtApelido.Text = pessoa.Apelido;
        if (pessoa.Sexo != null)
            rcbSexo.SelectedValue = pessoa.Sexo.IdTipoSexo.ToString();
        if(pessoa.EstadoCivil != null)
            rcbEstadoCivil.SelectedValue = pessoa.EstadoCivil.IdEstadoCivil.ToString();
        txtDataNascimento.SelectedDate = pessoa.DataNascimento;
    }
    private void CarregaNacionalidade()
    {
        List<TipoNacionalidade> listNacionalidade = new List<TipoNacionalidade>();
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;
        pessoa.CarregarNacionalidade();
        
        foreach (PessoaNacionalidade item in pessoa.Nacionalidade)
	    {
            listNacionalidade.Add(item.TipoNacionalidade);	 
	    }

        gridNacionalidade.DataSource = listNacionalidade;
        gridNacionalidade.DataBind();
    }
    private void CarregaNaturalidade()
    {
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;
        pessoa.CarregarNaturalidade();

        if (pessoa.CidadeNascimento != null)
        {
            rcbEstadoNat.SelectedValue = pessoa.CidadeNascimento.Uf.IdUf.ToString();

            CarregarCidadeNaturalidade(rcbCidadeNat, pessoa.CidadeNascimento.Uf.IdUf);
            rcbCidadeNat.SelectedValue = pessoa.CidadeNascimento.IdCidade.ToString();

            rcbCidadeNat.Enabled = true;
        }
    }
    private void CarregaFiliacao()
    {
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;
        pessoa.CarregarFiliacao();

        txtNomePai.Text = pessoa.NomePai;
        txtNomeMae.Text = pessoa.NomeMae;
    }
    private void CarregarConjuge()
    {
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;
        pessoa.CarregarConjuge();

        txtNomeConjuge.Text = pessoa.Conjuge;
        txtDataNacimentoConjuge.SelectedDate = pessoa.DataNascimentoConjuge;
    }
    private void CarregarCarcFisicas()
    {
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;
        pessoa.CarregarCaracteristicasFisicas();

        if (pessoa.TipoRacaCor != null)
            rcbRaca.SelectedValue = pessoa.TipoRacaCor.IdTipoRacaCor.ToString();
        txtAltura.Text = pessoa.Altura.ToString();
        txtPeso.Text = pessoa.Peso.ToString();
        if (pessoa.TipoCabelo != null)
            rcbCabelo.SelectedValue = pessoa.TipoCabelo.IdTipoCabelo.ToString();
        if (pessoa.TipoOlho != null)
            rcbOlhos.SelectedValue = pessoa.TipoOlho.IdTipoOlho.ToString();
        txtSinal.Text = pessoa.Sinal;
        if (pessoa.TipoSanguineo != null)
            rcbTipoSanguineo.SelectedValue = pessoa.TipoSanguineo.IdTipoSanguineo.ToString();
    }
    private void CarregarObs()
    {
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;
        pessoa.CarregarObservacoes();

        txtObs.Text = pessoa.Observacao;
        txtObsAdicional.Text = pessoa.ObservacaoAdicional;
    }
    #endregion

    #region CarregarCombos
    private void CarregarSexo(RadComboBox combo)
    {
        try
        {
            TipoSexo sexo = new TipoSexo();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdTipoSexo";
            combo.DataSource = sexo.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
            
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarNacionalidade(RadComboBox combo)
    {
        try
        {
            
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarEstadoNaturalidade(RadComboBox combo)
    {
        try
        {
            Uf uf = new Uf();

            combo.DataTextField = "Sigla";
            combo.DataValueField = "IdUf";
            combo.DataSource = uf.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarCidadeNaturalidade(RadComboBox combo, int idUf)
    {
        try
        {
            Cidade cidade = new Cidade();

            combo.DataTextField = "NomeCidade";
            combo.DataValueField = "IdCidade";
            combo.DataSource = cidade.SelectUf(idUf);
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarRaca(RadComboBox combo)
    {
        try
        {
            TipoRacaCor raca = new TipoRacaCor();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdTipoRacaCor";
            combo.DataSource = raca.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregaEstadoCivil(RadComboBox combo)
    {
        try
        {
            EstadoCivil estadoCivil = new EstadoCivil();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdEstadoCivil";
            combo.DataSource = estadoCivil.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregaCabelos(RadComboBox combo)
    {
        try
        {
            TipoCabelo cabelo = new TipoCabelo();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdTipoCabelo";
            combo.DataSource = cabelo.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregaOlhos(RadComboBox combo)
    {
        try
        {
            TipoOlho tipoOlho = new TipoOlho();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdTipoOlho";
            combo.DataSource = tipoOlho.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregaSanguineo(RadComboBox combo)
    {
        try
        {
            TipoSanguineo sanguineo = new TipoSanguineo();

            combo.DataTextField = "Descricao";
            combo.DataValueField = "IdTipoSanguineo";
            combo.DataSource = sanguineo.SelectAll();
            combo.DataBind();

            InserirSelecione(combo);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void InserirSelecione(RadComboBox combo)
    {
        try
        {
            combo.Items.Insert(0, new RadComboBoxItem(" -- Selecione -- ", "0"));
            combo.SelectedIndex = 0;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #endregion

    #region Gravar Dados
    private void GravaDadosPessoais()
    {
        try
        {
            Pessoa pessoa = new Pessoa();
            pessoa.IdPessoa = IdPessoa;
            pessoa.Nome = txtNome.Text;
            pessoa.Apelido = txtApelido.Text;
            pessoa.Sexo = new TipoSexo(int.Parse(rcbSexo.SelectedValue.ToString()));
            pessoa.EstadoCivil = new EstadoCivil(int.Parse(rcbEstadoCivil.SelectedValue.ToString()));
            pessoa.DataNascimento = txtDataNascimento.SelectedDate;

            pessoa.SalvarDadosPessoais();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void GravaNaturalidade()
    {
        try
        {
            Pessoa pessoa = new Pessoa();
            pessoa.IdPessoa = IdPessoa;
            pessoa.CidadeNascimento = new Cidade(int.Parse(rcbCidadeNat.SelectedValue.ToString()));

            pessoa.SalvarNaturalidade();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void GravaFiliacao()
    {
        try
        {
            Pessoa pessoa = new Pessoa();
            pessoa.IdPessoa = IdPessoa;

            pessoa.NomeMae = txtNomeMae.Text;
            pessoa.NomePai = txtNomePai.Text;

            pessoa.SalvarFiliacao();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void GravaConjuge()
    {
        try
        {
            Pessoa pessoa = new Pessoa();
            pessoa.IdPessoa = IdPessoa;

            pessoa.Conjuge = txtNomeConjuge.Text;
            pessoa.DataNascimentoConjuge = txtDataNacimentoConjuge.SelectedDate;

            pessoa.SalvarConjuge();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void GravaCarcFisicas()
    {
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;

        pessoa.TipoRacaCor = new TipoRacaCor(int.Parse(rcbRaca.SelectedValue.ToString()));
        pessoa.Altura = decimal.Parse(txtAltura.Text);
        pessoa.Peso = decimal.Parse(txtPeso.Text);
        pessoa.TipoCabelo = new TipoCabelo(int.Parse(rcbCabelo.SelectedValue.ToString()));
        pessoa.TipoOlho = new TipoOlho(int.Parse(rcbOlhos.SelectedValue.ToString()));
        pessoa.Sinal = txtSinal.Text;
        pessoa.TipoSanguineo = new TipoSanguineo(int.Parse(rcbTipoSanguineo.SelectedValue.ToString()));

        pessoa.SalvarCaractFisicas();
    }
    private void GravaObs()
    {
        Pessoa pessoa = new Pessoa();
        pessoa.IdPessoa = IdPessoa;

        pessoa.Observacao = txtObs.Text;
        pessoa.ObservacaoAdicional = txtObsAdicional.Text;

        pessoa.SalvarObs();
    }
    #endregion

    #endregion

    protected void btnSalvarDP_Click(object sender, EventArgs e)
    {
        GravaDadosPessoais();
        trMensagem.Visible = true;
        lblResultado.Text = "Dados salvos com sucesso! (Dados Pessoais)";
    }
    protected void btnSalvarNat_Click(object sender, EventArgs e)
    {
        GravaNaturalidade();
        trMensagem.Visible = true;
        lblResultado.Text = "Dados salvos com sucesso! (Naturalidade)";
    }
    protected void btnSalvarFiliacao_Click(object sender, EventArgs e)
    {
        GravaFiliacao();
        trMensagem.Visible = true;
        lblResultado.Text = "Dados salvos com sucesso! (Filiação)";
    }
    protected void btnSalvarConjuge_Click(object sender, EventArgs e)
    {
        GravaConjuge();
        trMensagem.Visible = true;
        lblResultado.Text = "Dados salvos com sucesso! (Cônjuge)";
    }
    protected void btnSalvarCarcFisicas_Click(object sender, EventArgs e)
    {
        GravaCarcFisicas();
        trMensagem.Visible = true;
        lblResultado.Text = "Dados salvos com sucesso! (Características Físicas)";
    }
    protected void btnSalvarObs_Click(object sender, EventArgs e)
    {
        GravaObs();
        trMensagem.Visible = true;
        lblResultado.Text = "Dados salvos com sucesso! (Observações)";
    }
}
